package com.sky.result;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
/**
 * 1. 当前包名: com.sky.result    存放与结果相关的类
 * 2. 当前类名: PageResult    分页查询结果封装类
 */

/**
 * PageResult; 封装分页查询的结果，包括总记录数和当前页的数据。
 * 该类通常用于处理分页查询结果，帮助前端展示分页信息。
 */
/**
 * 封装分页查询结果
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageResult implements Serializable {
    /**
     * * 知识点:
     * 1. `@Data`：来自 Lombok 的注解，自动为类生成 `getter`、`setter`、`toString()`、`equals()` 和 `hashCode()` 等方法，避免样板代码。
     * 2. `@AllArgsConstructor`：来自 Lombok 的注解，自动生成一个包含所有字段的构造方法，简化对象的创建。
     * 3. `@NoArgsConstructor`：来自 Lombok 的注解，自动生成一个无参构造方法，适用于需要无参构造的场景，如反序列化。
     * 4. `Serializable`：实现该接口使得 `PageResult` 可以进行序列化，便于跨网络传输或存储到文件。
     * 5. 分页查询常见的字段：`total` 表示查询结果的总记录数，`records` 表示当前页的具体数据。
     * 6. `List` 类型：表示当前页的数据集合，可以存储任何类型的数据。
     */
    private long total; //总记录数

    private List records; //当前页数据集合

}

/**
 * 仿写：
 * public class ApiResponse<T> implements Serializable {
 * // 响应状态码（如 200 成功，500 服务器错误等）
 *     private int statusCode;
 *     // 响应消息，用于描述状态
 *     private String message;
 *     // 响应数据，使用泛型可以灵活支持不同类型的返回数据
 *     private T data;
 * }
 */